home *** CD-ROM | disk | FTP | other *** search
/ Cracking 2 / Cracking II..iso / Texty / crackme / eb_tut30.txt < prev    next >
Encoding:
Text File  |  1999-10-23  |  7.9 KB  |  243 lines

  1.             Tutorial Number 30
  2.  
  3. Written by Etenal Bliss
  4. Email: Eternal_Bliss@hotmail.com
  5. Website: http://crackmes.cjb.net
  6.          http://surf.to/crackmes
  7. Date written: 23rd Oct 1999
  8.  
  9. Program Details:
  10. Name: VBCrackMe 11 by Eternal Bliss
  11.  
  12. Tools Used:
  13. SmartCheck
  14. W32Dasm
  15.  
  16. Cracking Method:
  17. Patching
  18.  
  19. Viewing Method:
  20. Use Notepad with Word Wrap switched on
  21. Screen Area set to 800 X 600 pixels (Optional)
  22.  
  23. Special Thanks to:
  24. Volatility for compiling this CrackMe in VB5.
  25.  
  26. __________________________________________________________________________
  27.  
  28.  
  29.                         About this protection system
  30.  
  31. There are 5 different disabled protections that you need to patch.
  32. I coded the crackme such that you get to see what makes a button enabled
  33. and what makes it disabled. Using such comparison method, you will be able
  34. to patch the crackme to enable every single protection.
  35. This CrackMe is coded in VB5 because VB6 uses a different method of
  36. enabling and disabling buttons etc and I have not figured out how to
  37. patch them yet. 8P
  38.  
  39. _________________________________________________________________________
  40.  
  41.  
  42.                         About this tutorial
  43. I presume that you have seen all my tutorials and know how to use SmartCheck
  44. and W32Dasm.
  45.  
  46. _________________________________________________________________________
  47.  
  48.  
  49.             SmartCheck and W32Dasm
  50.  
  51. Disassemble the CrackMe with W32Dasm.
  52.  
  53. Run SmartCheck and load the CrackMe with it.
  54. When the CrackMe has finish loading, you can press the Stop button.
  55.  
  56. In the left window of SmartCheck, you will see Form1_Load.
  57. Click on the + sign next to it to expand the thread.
  58.  
  59. There are 9 lines in this thread...
  60. Command1.Enabled <-- False (Boolean)
  61. Command3.Enabled <-- True (Boolean)
  62. Text1.Enabled <-- False (Boolean)
  63. Text2.Enabled <-- True (Boolean)
  64. Label3.Visible <-- False (Boolean)
  65. Disabled.Enabled <-- False (Boolean)
  66. Enable.Enabled <-- True (Boolean)
  67. Invisible.Visible <-- False (Boolean)
  68. Visiblee.Visible <-- True (Boolean)
  69.  
  70. Command1 and Command 3 are the two buttons. You figure out the rest... 8)
  71.  
  72. ---------------------------------------------
  73. 1)
  74. Command1.Enabled <-- False (Boolean)
  75. This is the button with "Disabled" on it.
  76.  
  77. Command3.Enabled <-- True (Boolean)
  78. This is the button with "Enabled" on it and when you click it, you will get
  79. a message.
  80.  
  81. Click on the line "Command1.Enabled <-- False (Boolean)"
  82. You will see on the right window of SmartCheck:
  83. VBCRACKME11.EXE!00004C34 (no debug info)
  84. * SmartCheck is telling you that at this offset, the program is disabling
  85.   the button.
  86.  
  87. To see the codes in W32Dasm, add 00400000 to 00004C34.
  88. You get 00404C34. Thus in W32dasm, goto Code Location 404C34.
  89. Do you see the following lines?
  90. :00404C2D 6A00                    push 00000000
  91. :00404C2F 50                      push eax
  92. :00404C30 8945E4                  mov dword ptr [ebp-1C], eax
  93. :00404C33 FF928C000000            call dword ptr [edx+0000008C]
  94.  
  95. Click on Command3.Enabled <-- True (Boolean)
  96. You will see on the right window of SmartCheck:
  97. VBCRACKME11.EXE!00004C72 (no debug info)
  98. * SmartCheck is telling you that at this offset, the program is enabling
  99.   the button.
  100.  
  101. Using W32Dasm, you go to the Code Location using the method I mentioned
  102. above...
  103. You will see:
  104. :00404C6B 6AFF                    push FFFFFFFF
  105. :00404C6D 50                      push eax
  106. :00404C6E 8945E4                  mov dword ptr [ebp-1C], eax
  107. :00404C71 FF918C000000            call dword ptr [ecx+0000008C]
  108.  
  109. Compare the 2 different codes...
  110. The first set is to disable a button. The 2nd set is to enable another button.
  111. Now... What is the difference between them?
  112.  
  113. It's push 00000000 or push FFFFFFFF
  114. Time to see if we have used correctly a Cracker's instinct or zen...
  115.  
  116. Make a copy of the CrackMe and open it with a Hexeditor.
  117. Click in W32DAsm, the line 
  118. ":00404C2D 6A00                    push 00000000"
  119. Look at the offset and go to it in the Hexeditor.
  120. It is at offset 402D.
  121. Now, what bytes should we replace 6A00 with?
  122. Looking at "push FFFFFFFF", you will see it is 6AFF. heh...
  123. Replace 6A00 with 6AFF then... Save it and run it...
  124. See if the button has been enabled...
  125.  
  126. Viola! 8)
  127. On with the next protection!
  128.  
  129. ---------------------------------------------
  130.  
  131. 2)
  132. Text1.Enabled <-- False (Boolean)
  133. Text2.Enabled <-- True (Boolean)
  134.  
  135. Using the same method like what I have described,
  136. look at both the disabling and enabling codes...
  137. I have copied them down below:
  138.  
  139. Disabled
  140. --------
  141. :00404CA9 6A00                    push 00000000
  142. :00404CAB 50                      push eax
  143. :00404CAC 8945E4                  mov dword ptr [ebp-1C], eax
  144. :00404CAF FF918C000000            call dword ptr [ecx+0000008C]
  145.  
  146. Enabled
  147. -------
  148. :00404CE7 6AFF                    push FFFFFFFF
  149. :00404CE9 50                      push eax
  150. :00404CEA 8945E4                  mov dword ptr [ebp-1C], eax
  151. :00404CED FF918C000000            call dword ptr [ecx+0000008C]
  152.  
  153. heh... Spot the difference...
  154. VB is really lame, huh? hehe
  155.  
  156. Check out where the offset is for "push 00000000" again.
  157. It is 40A9. Go and patch it in the Hexeditor and see if you
  158. can type in the disabled textbox now... 8)
  159.  
  160. Viola! heh
  161. On with the 3rd protection.
  162.  
  163. ---------------------------------------------
  164.  
  165. 3)
  166. Click on "Label3.Visble <-- False (Boolean)" in SmartCheck and see
  167. the location that you need to go for W32Dasm.
  168.  
  169. Do you see the following code in W32Dasm?
  170. :00404D25 6A00                    push 00000000
  171. :00404D27 50                      push eax
  172. :00404D28 8945E4                  mov dword ptr [ebp-1C], eax
  173. :00404D2B FF919C000000            call dword ptr [ecx+0000009C]
  174.  
  175. And do you see the "push 00000000" again? hehehe
  176. Patch what you need as above and run the CrackMe again...
  177.  
  178. Viola!!! You are now "Registered" !!!
  179. On with the next protection.
  180.  
  181. ---------------------------------------------
  182.  
  183. 4)
  184. The 4th protection is to disable a Menu Option which is common
  185. for Demo programs...
  186. I called the Menu Options "Disabled" and "Enable" for easy reference.
  187. Using the method I described above, you will see this in W32Dasm:
  188.  
  189. :00404D63 6A00                    push 00000000
  190. :00404D65 50                      push eax
  191. :00404D66 8945E4                  mov dword ptr [ebp-1C], eax
  192. :00404D69 FF5174                  call [ecx+74]
  193.  
  194. This is for the disabled Menu Option... Patch it as before...
  195. Do you see the disabled Menu Option is now enabled??? hehe
  196. Next please...
  197.  
  198. ---------------------------------------------
  199.  
  200. 5)
  201. The last protection is a Menu Option that is now shown at all...
  202. thus you saw "Invisible.Visible <-- False (Boolean)"
  203. If you have followed my previous few examples, you will know that
  204. you only need to see the disabling code... and change 6A00 to 6AFF.
  205.  
  206. In W32DAsm, you will see that the codes is:
  207. :00404DD3 6A00                    push 00000000
  208. :00404DD5 50                      push eax
  209. :00404DD6 8945E4                  mov dword ptr [ebp-1C], eax
  210. :00404DD9 FF515C                  call [ecx+5C]
  211.  
  212. Patch it. 8)
  213. Now, run the CrackMe and see if you can see the Menu Option that was
  214. invisible... hehehe...
  215.  
  216. CrackMe Cracked!
  217.  
  218. __________________________________________________________________________
  219.  
  220.  
  221.                              Additional Points
  222.  
  223. In VB5 programs, if you ever come across such disabled buttons or Menu Options,
  224. just use SmartCheck and W32Dasm together... With my method, you will easily
  225. patch the protection...
  226.  
  227. An example of such programs is TweakDun.
  228.  
  229. For certain Nag screens, you can apply similar method. Just NOP out the
  230. call that makes the Nag. Make sure that it is not the VB dll that you have to 
  231. patch...
  232.  
  233. __________________________________________________________________________
  234.  
  235.  
  236.                              Final Notes
  237.  
  238. This tutorial is dedicated to all the newbies like me.
  239.  
  240. My thanks and gratitude goes to:-
  241.  
  242. All the writers of Cracks tutorials and CrackMes
  243. and also to all the crackers that have been supporting my site and project forum.